求方程[x/2]+[x/3]+[x/7]=x的所有解,其中[a]表示不超过a的最大整数

来源:百度知道 编辑:UC知道 时间:2024/05/02 21:13:34
求方程[x/2]+[x/3]+[x/7]=x的所有解,其中[a]表示不超过a的最大整数

∵x-1≤[x] ≤x,
∴x/2+x/3+x/7-3≤[X/2]+[X/3]+[X/7] ≤X/2+X/3+X/7
∴-126≤X≤0
由于〔X/2〕=X/2或者X/2-1,分四种情况讨论
(1)当X只能被2,3,7中一个数整除时,
X= x/2+x/3+x/7-2,解得X=-84(舍去)
(2)当X只能被2,3,7中两个数整除时,
X= x/2+x/3+x/7-1,解得X=-42(舍去)
(3)当X能被2,3,7中三个数整除时,
X= x/2+x/3+x/7,解得X=0
(4)当X不能被2,3,7中任何一个数整除时,
X= x/2+x/3+x/7-3,解得X=-126(舍去)
所以X=0

首先利用a-1<[a]<=a可以推出-126<x<=0。
再分奇偶性讨论可以得到更好的下界-105(对奇数)和-84(对偶数)。
当然,再根据除以3或7的余数讨论可以获得更多必要条件。
然后也许就没什么好办法了(至少我没办法了),只能逐个验证,最后得到42个解:
0, -6, -12, -14, -18, -20,
-21, -24, -26, -27, -28, -30,
-32, -33, -34, -35, -36, -38,
-39, -40, -41, -44, -45, -46,
-47, -49, -50, -51, -52, -53,
-55, -57, -58, -59, -61, -64,
-65, -67, -71, -73, -79, -85

#include<stdio.h>
main()
{int x;
x=-30000;
for(;x<30000;x++)
if(x/2+x/3+x/7==x)
printf("%d ",x);
printf("\n");}

结果为:0